FIG. 1 is a block diagram of an example of a portion of a conventional integrated circuit (IC) chip 10. The chip 10 includes a number x of masters 12 and a number y of slaves 14, interconnected by a data bus 16. The chip 10 also includes a bus arbiter 18, which receives bus arbitration requests from the masters 12 and allows one master 12 at a time to control the bus 16. When a master 12 is given control of the bus 16, this controlling master 12 may then access any slave 14 as needed.
For example, one of the masters 12 may be an interface designed to receive video data from an external source. The interface may be capable of transmitting the video data to one of the slaves 14, such as a memory controller, which controls the storage of the video data in a “frame buffer” of an external memory device. Also, one of the masters 12 may be a video display controller, which requests access to the video data stored within the frame buffer of the memory device controlled by the memory controller slave 14. The video data is then retrieved by the memory controller and put out onto the data bus 16 for the video display controller. The video display controller then retrieves the video data from the data bus 16 and feeds the video data to an external video display.
It should be noted that a typical memory device is usually organized in data widths of 16 bits (half word) or 32 bits (word). Video data, however, is usually organized in a data width according to the width of the pixel, which may be 16 bits, 18 bits, or 24 bits wide. Each pixel of the video data typically includes the three color components red (R), green (G), and blue (B), which are the three additive primary colors of light. Typically, each color component includes six or eight bits of data to represent that color. In the case where each color component includes six bits, the pixel contains 18 bits total. In the case where each color component includes eight bits, the pixel contains 24 bits total. The 18 or 24 bits of video data for each pixel are stored in the 32-bit format of the memory device. Any unused or “don't care” bits are disregarded by the video display controller.
FIG. 2A is a chart showing the arrangement of an eight-pixel block of video data stored in a 32-bit wide memory. In this arrangement, each color component includes six bits, which totals 18 bits for each pixel. For example, bits 17-12 may be used for the red (R) component, bits 11-6 may be used for the green (G) component, and bits 5-0 may be used for the blue (B) component. Bits 31-18 are unused, or don't cares (X's), in this system. The first word illustrates the first pixel (pixel “0”) including color components R0, G0, and B0; the second word illustrates the second pixel (pixel “1”) including color components R1, G1, and B1; etc.
FIG. 2B is a chart showing the arrangement of an eight-pixel block of video data stored in a 32-bit wide memory. In this arrangement, each color component includes eight bits, which totals 24 bits for each pixel. For example, bits 23-16 may be used for the red (R) component, bits 15-8 may be used for the green (G) component, and bits 7-0 may be used for the blue (B) component. Bits 31-24 are unused bits. Although the conventional arrangements shown in FIGS. 2A and 2B represent simple ways to store video data, it can be seen that at least a quarter of the bits in each word are not used.
In addition, as is apparent from these conventional storage techniques, there are many bits that are both stored in memory and transferred along the data bus 16 that are don't cares “X”. By minimizing the number of unused bits stored in memory, more storage space can be available for other uses. Furthermore, minimizing unused bits during transmission may also provide greater bus availability for all the bus users, thereby allowing the chip to operate more efficiently at a given speed.